/*
 * Copyright (C) 2015-2020 Alibaba Group Holding Limited
 */

#ifndef TCA6424_H
#define TCA6424_H

#include "aos/hal/gpio.h"
#include "aos/hal/i2c.h"
#include "soc_init.h"

#define  TCA6424_I2C_ADDR_HIGH    0x23
#define  TCA6424_I2C_ADDR_LOW     0x22

/*config able */
#ifndef  MAX_I2C_BUS_NUM
#define  MAX_I2C_BUS_NUM          2
#endif

typedef enum {
    TCA_PORT0_0 = 0,
    TCA_PORT0_1,
    TCA_PORT0_2,
    TCA_PORT0_3,
    TCA_PORT0_4,
    TCA_PORT0_5,
    TCA_PORT0_6,
    TCA_PORT0_7,
    TCA_PORT1_0,
    TCA_PORT1_1,
    TCA_PORT1_2,
    TCA_PORT1_3,
    TCA_PORT1_4,
    TCA_PORT1_5,
    TCA_PORT1_6,
    TCA_PORT1_7,
    TCA_PORT2_0,
    TCA_PORT2_1,
    TCA_PORT2_2,
    TCA_PORT2_3,
    TCA_PORT2_4,
    TCA_PORT2_5,
    TCA_PORT2_6,
    TCA_PORT2_7,
    TCA_PORT_SIZE,
}en_tca_port;

extern const st_gpio_opt_t g_sttca6424_gpio_opt;

int32_t tca6426_device_init(uint8_t gpio_reset, uint8_t gpio_int, uint8_t i2c_port, uint16_t dev_addr);

int32_t tca6424_device_deinit(uint8_t gpio_reset, uint8_t gpio_int, uint8_t i2c_port, uint16_t dev_addr);

#endif